python - 在python中创建一个匿名类实例
全部标签 我的直觉是将代码块封装在像这样的匿名函数中是个好主意:(function(){varaVar;aVar.func=function(){alert('ronk');};aVar.mem=5;})();因为我不再需要aVar,所以我假设垃圾收集器将在超出范围时删除aVar。这是正确的吗?或者解释器是否足够聪明,可以看到我不再使用该变量并立即清理它?是否有任何理由,例如风格或可读性,我应该不以这种方式使用匿名函数?另外,如果我给函数命名,像这样:varoperations=function(){varaVar;aVar.func=function(){alert('ronk');};aVa
我已经建立了一个带有2个实例方法的简单模型。如何在生命周期回调中调用这些方法?module.exports={attributes:{name:{type:'string',required:true}//InstancemethodsdoSomething:function(cb){console.log('Letstry'+this.doAnotherThing('this'));cb();},doAnotherThing:function(input){console.log(input);}},beforeUpdate:function(values,cb){//Thisdoe
假设我得到一个匿名函数,需要对其上下文进行操作,但它是绑定(bind)到“窗口”还是绑定(bind)到未知对象是不同的。如何获取调用匿名函数的对象的引用?编辑,一些代码:varObjectFromOtherLibIAmNotSupposedToknowAbout={foo:function(){//dosomethingon"this"}}varfunctionbar(callback){//hereIwanttogetareferenceto//ObjectFromOtherLibIAmNotSupposedToknowAbout//ifObjectFromOtherLibIAmNo
我有一些静态属性,我想从我的Backbone.Model对象的实例中访问这些属性。我知道我可以硬编码父构造函数来调用该方法,但这会阻止我使用多态静态函数。例如,我希望能够在必要时覆盖ExtendedInventory中的foo函数,而无需更改任何其他代码。varInventory=Backbone.Model.extend({},//STATIC{foo:function(){alert('bar');}});vari=newInventory({});i.constructor.foo();//Thisworks!varExtendedInventory=Inventory.exte
我想使用模块模式不复制实例化一个可调用类。以下是我对此的最佳尝试。但是,它使用了我不确定的__proto__。这可以在没有__proto__的情况下完成吗?functionclasscallable(cls){/**Replicatethe__call__magicmethodofpythonandletclassinstances*becallable.*/varnew_cls=function(){varobj=Object.create(cls.prototype);//createcallable//weusefunc.__call__becausecallmightbedef
我已经多次使用setTimeout传递函数作为引用,例如setTimeout(someFunction,3000);在某些情况下,为了保留this的值,我不得不事先将其分配给一个变量,但不明白为什么以下内容不起作用:varlogger={log:function(){varthat=this;console.log(that.msg);setTimeout(that.log,3000);},msg:"test"};logger.log();然而,使用匿名函数确实有效:varlogger={log:function(){varthat=this;console.log(that.msg)
是否可以在下面测试myInnerFunction?varval=function(){varmyInnerfunction=function(input){returninput+'IADDEDTHIS';};returnmyInnerfunction('testvalue');}();因为myInnerFunction本质上是匿名执行的外部函数的私有(private)成员,所以它似乎无法从外部进行测试。 最佳答案 您可以故意向外界公开测试Hook,可能如下所示:varval=function(){varmyInnerfunctio
我正在使用JWPlayer.设置好播放器后,我需要为一些事件添加监听器,举个例子,我监听events.JWPLAYER_MEDIA_TIME像这样:jwplayer('video-container').onTime(this.onTimeHandler);一段时间后,我需要删除这个事件监听器,阅读documentation我找不到任何解决方案。 最佳答案 Lookingatthecode,似乎不可能删除事件监听器:当您调用onTime(或任何其他设置事件处理程序的方法)时,回调被推送到数组上,因此第二次调用它不会覆盖以前的监听器,
我正在寻找更新对象实例的最佳方法,例如在本例中myParentObjects的名称属性。我理解实现此目的的唯一方法是将父对象对子对象实例的引用作为参数传递给构造函数中的newmyChildObj(this,name)或myChildObj实例,如myChildObj.updateParentProperty(name)。我无法想象子对象向下嵌套4-5层,并且必须更新其父对象的属性传递(parent1,parent2,parent3,etc)它是参数,那将是管理噩梦!必须有更好的方法来更新父属性!functionmyParentObj(){this.name='jordan'this.n
我在没有Prototype/jQuery的情况下用JavaScript进行面向对象的编程(我使用jQuery做其他事情)。到目前为止它一直运行良好,但我遇到了继承问题。基本上,当我在构造函数中声明对象时,它们在实例之间共享。下面是一些示例代码:A=function(){this.y=newArray();}A.prototype.doStuff=function(n){this.y.push(n);}B=function(){}B.prototype=newA();varb1=newB();varb2=newB();b1.doStuff(100);b2.doStuff(200);con